//
//  ViewController.m
//  UI19_网络数据解析
//
//  Created by 李劲成 on 16/4/5.
//  Copyright © 2016年 ljc. All rights reserved.
//

#import "ViewController.h"
#import "SaxXMLHandler.h"
#import "DOMXMLHandler.h"
#import "JSONParser.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self handleData];
    [self handleDataWithDom];
    [self JSON];
    // Do any additional setup after loading the view, typically from a nib.
}
#pragma mark - 知识点1 XML Parse (XML 解析)
/**
 * @brief 讲解:
 *
 * Parse(解析): 从事先规定好的格式中提取数据.
 * 解析的前提: 提前约定好格式. 数据提供方按照格式提供数据, 数据获取方按照格式获取数据
 *
 * iOS 开发中常见的解析: XML解析, JSON解析
 *
 * XML: Extensible Markup language (可扩展标记语言), 主流数据格式之一, 可以用来存储和传输数据
 *
 * XML数据格式的功能: 数据交换, 内存管理, 用作配置文件
 *
 * XML数据结构的语法
 声明
 节点使用一对标签标示<>. 分起始和结束标签 < > 和 </ >
 根节点是起始节点.只有一个.
 节点可以嵌套
 节点可以有值. 存储在一对标签中.
 */

/* 创建一个Student.xml文件 */

#pragma mark -  知识点2 SAX方式解析XML数据
/**
 * @brief 讲解:
 *
 * SAX: Simple API for XML. 基于事件驱动的解析方法, 逐行解析数据.(采用协议回调机制)
 *
 * NSXMLParse是iOS自带的XML解析类, 采用SAX方式解析数据.
 * 解析过程由NSXMLParseDelegate协议方法回调
 * 解析过程: 开始标签 -> 取值 -> 结束标签 -> 取值
 *
 * 详见: SaxXMLHandler 类
 */
- (void)handleData {
    NSArray *arr = [[SaxXMLHandler saxXMLHandler] startParserWithName:@"Student" type:@"xml"];
    

}
#pragma mark - 知识点3 DOM方式解析XML数据
/**
 * @brief 讲解:
 *
 * DOM:Document Object Model (文档对象模型).
 *
 * 解析时需要将XML文件整体读入, 并且将XML结构化成树状, 使用时再通过树状结构读取相关数据
 *
 * 使用的类是第三方类:GDataXMLNode
 * Google提供的开源XML解析类, 对libxml2.dylib 进行了Objective-C的封装
 * 采用DOM方式解析数据
 *
 * iOS 中包含一个C语言的动态链接库 libxml2.dylib , 解析速度比NSXMLParse快.
 *
 * 详见 DOMXMLHandler 类
 */

- (void)handleDataWithDom {
    NSArray *arr = [DOMXMLHandler domXMLParserWithFileName:@"Student" fileType:@"xml"];
    
}

- (void)JSON {
    id result = [JSONParser jsonParserWithFileName:@"Student" fileType:@"txt"];
    NSLog(@"%@", result);
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
